package hr.ctg.domain.model;

// Generated 2007.05.02 22:50:59 by Hibernate Tools 3.2.0.b9

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.validator.NotNull;

/**
 * DnevnikAktivnosti generated by hbm2java
 */
@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Table(name = "dnevnik_aktivnosti")
@NamedQueries( { @NamedQuery(name = "DnevnikAktivnosti.findRecentObjektChanges", query = "select DISTINCT new Objekt(da.objekt.idObjekta,da.objekt.tipObjekta,da.objekt.mjesto,da.objekt.naziv) from DnevnikAktivnosti da where da.objekt is not null order by da.vrijeme desc")})
public class DnevnikAktivnosti implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4834581025949075786L;
	private int idAktivnosti;
	private Objekt objekt;
	private Mjesto mjesto;
	private Otok otok;
	private Park park;

	private Akcija akcija;
	private Korisnik korisnik;
	private Date vrijeme;
	private String opis;

	public DnevnikAktivnosti() {
	}

	public DnevnikAktivnosti(final int idAktivnosti, final Objekt objekt,
			final Akcija akcija, final Korisnik korisnik, final Date vrijeme) {
		this.idAktivnosti = idAktivnosti;
		this.objekt = objekt;
		this.akcija = akcija;
		this.korisnik = korisnik;
		this.vrijeme = vrijeme;
	}

	public DnevnikAktivnosti(final int idAktivnosti, final Objekt objekt,
			final Akcija akcija, final Korisnik korisnik, final Date vrijeme,
			final String opis) {
		this.idAktivnosti = idAktivnosti;
		this.objekt = objekt;
		this.akcija = akcija;
		this.korisnik = korisnik;
		this.vrijeme = vrijeme;
		this.opis = opis;
	}

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_aktivnosti", unique = true, nullable = false)
	@NotNull
	public int getIdAktivnosti() {
		return idAktivnosti;
	}

	public void setIdAktivnosti(final int idAktivnosti) {
		this.idAktivnosti = idAktivnosti;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_objekta", nullable = true)
	public Objekt getObjekt() {
		return objekt;
	}

	public void setObjekt(final Objekt objekt) {
		this.objekt = objekt;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_akcije", nullable = false)
	@NotNull
	public Akcija getAkcija() {
		return akcija;
	}

	public void setAkcija(final Akcija akcija) {
		this.akcija = akcija;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_korisnika", nullable = false)
	@NotNull
	public Korisnik getKorisnik() {
		return korisnik;
	}

	public void setKorisnik(final Korisnik korisnik) {
		this.korisnik = korisnik;
	}

	@Column(name = "vrijeme", nullable = false, length = 0)
	@NotNull
	public Date getVrijeme() {
		return vrijeme;
	}

	public void setVrijeme(final Date vrijeme) {
		this.vrijeme = vrijeme;
	}

	@Column(name = "opis")
	public String getOpis() {
		return opis;
	}

	public void setOpis(final String opis) {
		this.opis = opis;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_otoka", nullable = true)
	public Otok getOtok() {
		return otok;
	}

	public void setOtok(final Otok otok) {
		this.otok = otok;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_mjesta", nullable = true)
	public Mjesto getMjesto() {
		return mjesto;
	}

	public void setMjesto(final Mjesto mjesto) {
		this.mjesto = mjesto;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_parka", nullable = true)
	public Park getPark() {
		return park;
	}

	public void setPark(final Park park) {
		this.park = park;
	}

}
